/**
 *  新規登録内容をチェックするクラス
 *  @author Komori
 *  @version 1.0
 */

package manager;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class EntryServlet extends HttpServlet {

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

		req.setCharacterEncoding("UTF-8");

		// 各入力パラメータの取得
		String name = req.getParameter("name");
		String ruby = req.getParameter("ruby");
		String level = req.getParameter("level");
		String password = req.getParameter("password");

		// 未入力項目チェック変数、エラーメッセージを格納する変数を準備
		Integer nullCnt = 0;
		Map<String, String> errors = new HashMap<String, String>();
		// 担当者名未入力時エラー
		if("".equals(name) || name.length() == 0) {
			nullCnt++;
		}
		// カナ名未入力時エラー
		if("".equals(ruby) || ruby.length() == 0) {
			nullCnt++;
		}
		// カナ名カナ以外入力時エラー
		else if(!ruby.matches("^[\\u30A0-\\u30FF]+$")) {
			errors.put("ruby", "フリガナは全角カタカナのみで入力してください<br />");
		}
		// パスワード未入力時エラー
		if("".equals(password) || password.length() == 0) {
			nullCnt++;
		}
		// パスワード半角英数字以外入力時エラー
		else if(!password.matches("^[0-9a-zA-Z]+$")) {
			errors.put("password", "パスワードは半角英数字で入力してください<br />");
		}

		// 各入力内容のスコープ設定
		req.setAttribute("name", name);
		req.setAttribute("ruby", ruby);
		req.setAttribute("level", level);
		req.setAttribute("password", password);

		// エラーがない場合確認画面に遷移
		if(nullCnt == 0 && errors.size() == 0) {
			req.getRequestDispatcher("/manager/managerEntryCheck.jsp").forward(req, resp);
		}
		// エラーがある場合エラーメッセージを保持し入力画面に遷移
		else {
			req.setAttribute("nullCnt", nullCnt);
			req.setAttribute("errors", errors);
			req.getRequestDispatcher("/manager/managerEntry.jsp").forward(req, resp);
		}

	}

}
